# 第一部分：构建(build)
# FROM 代表有一个基础镜像
FROM node:14.3 as build-stage

# 用来标识谁在维护这个项目
LABEL maintainer=bgl_cumt_zju@163.com

# 创建一个工作目录
WORKDIR /app

# 将当前目录下的所有文件或资源复制到镜像中。
# 注：针对项目中的 node_modules 或 dist 目录等不需要拷贝到镜像的文件，可以借助.dockerignore
COPY . .

# 使用淘宝的镜像源进行加速
RUN npm install --registry=https://registry.npm.taobao.org --verbose

RUN npm run build

# 第二部分：生产发布(production)
FROM nginx:stable-alpine as production-stage

# 将构建后的内容复制到 web 容器中的 html 目录，这里采用的 web 容器是 Nginx
COPY --from=build-stage /app/dist /usr/share/nginx/html

# EXPOSE 相当于暴露镜像的某个端口。
# 这里暴露一些服务端口，以便在宿主机去运行这个镜像的时候可以将其映射到宿主机上的端口
EXPOSE 80

# 运行 nginx。
# CMD 用于执行脚本。相当于镜像运行起来之后，它就会执行CMD后的命令。命令通过数组的方式拼接起来。
CMD ["nginx", "-g", "daemon off;"]
